<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
</body>
    <script>
        const arr = [
            {'id':'29','pid':'','name':'总裁办'},
            {'id':'2c','pid':'','name':'财务部'},
            {'id':'2d','pid':'2c','name':'财务核算部'},
            {'id':'2f','pid':'2c','name':'薪资管理部'},
            {'id':'d3','pid':'','name':'技术部'},
            {'id':'29','pid':'d2','name':'Java研发部'},
        ]

        const map = {}
        const new_arr = [] //存储转化为之后树形数据
        // 遍历数组取出每一个对象 给每一个对象添加一个children属性 没有就添加一个children属性
        arr.forEach(item=>{
            if (!item.children) {
            item.children = []
        }

        // 为了方便查找对象 可以建立一个映射对象 键是每个对象的id 值是每个对象item
        map[item.id] = item
    })
    console.log('map',map);

        // 找关系
        arr.forEach(item=>{
            // parent存储的值 undefined || 父级对象
            const parent = map[item.pid]
            if(parent) {
                // 说明当前item是一个子级数据
                parent.children.push(item)
            } else {
                // 说明当前item是一级数据
                new_arr.push(item)
            }
        })
        console.log('new_arr',new_arr);

    </script>
</html>